﻿using SharpDepend.Architecture.Windows;
using System;
using System.Collections.Generic;

namespace SharpDepend.Architecture.Core
{
    public interface IBaseApplication
    {
        /// <summary>
        /// Get application version.
        /// </summary>
        Version Version { get; }

        /// <summary>
        /// Calls at start to registrate all platform dependent classes like how to handle windows, pages ect.
        /// </summary>
        //PlatforClassRegistrations PlatformClassRegistration();
    }

    public interface IBaseApplication<TApplication, TApplicationCore>
        : IBaseApplication
        where TApplication : IBaseApplication
        where TApplicationCore : BaseApplicationCore<TApplication, TApplicationCore>
    {
        /// <summary>
        /// Get application logic core instance.
        /// </summary>
        TApplicationCore Core { get; }

        void LoadWindows(List<IWindowBase<TApplication>> windows);
    }
}
